問題:
為什麼有時候 ajax 會發兩次 request?
原因:
因為只要發送請求到不同 origin 就會有 cors 的問題
所以 server 必須先確定 client 端是合法請求,也就是
Preflighted 要先發一次 request 去驗證是否合法 domain
成功了才能發真正的 request
Cors
request 必須符合 same origin policy (同源政策)
才能確保是站內取得站內的資料不會被外部隨便入侵
但若有需求(ex: 開 api)是需要讓其他 domain 使用的話就必須開放
Cors ,去驗證允許你要哪個 domain 可以跟你要資料
解決:
每當 client fetch 時會有兩種方式
Preflighted request 就是像剛剛講的流程會先發一次
request 跟 server 做驗證,在發一次拿真的資料
,一般情況下所有 request 都是使用 preflighted req
Simple request
在符合某些條件下,可以省去驗證的 request,好處是可以少一個 request ,但是通常要設定,Header 資料格式,而那些格式又不常使用,所以極為少見使用
Ref: